2.1.2 Eureka的高可用

按照前文对Eureka的讲解,我们即可构建出一个简单的注册中心。但此时的Eureka是单点的,不适合于生产环境,那么如何实现Eureka的高可用呢?

  • 添加主机名:
  1. 127.0.0.1 peer1 peer2
  • 修改application.yml
  1. ---
  2. spring:
  3. profiles: peer1 # 指定profile=peer1
  4. server:
  5. port: 8761
  6. eureka:
  7. instance:
  8. hostname: peer1 # 指定当profile=peer1时,主机名
  9. client:
  10. serviceUrl:
  11. defaultZone: http://peer2:8762/eureka/ # 将自己注册到peer2这个Eureka上面去
  12. ---
  13. spring:
  14. profiles: peer2
  15. server:
  16. port: 8762
  17. eureka:
  18. instance:
  19. hostname: peer2
  20. client:
  21. serviceUrl:
  22. defaultZone: http://peer1:8761/eureka/
  • 分别启动两个Eureka应用:
  1. java -jar microservice-discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1
  2. java -jar microservice-discovery-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2
  • 访问http://peer1:8761 ,我们会发现registered-replicas 中已经有peer2 节点了,同样地,访问http://peer2:8762 ,也能发现其中的registered-replicaspeer1 节点,如下图:

Eureka 高可用

  • 我们尝试将peer2 节点关闭,然后访问http://peer1:8761 ,会发现此时peer2会被添加到unavaliable-replicas 一栏中。

注意:

该示例中的hostname 并非必须的,如果不配置,默认将会使用IP进行查找。

将服务注册到高可用的Eureka

如果注册中心是高可用的,那么各个微服务配置只需要将defaultZone 改为如下即可:

  1. eureka:
  2. client:
  3. serviceUrl:
  4. defaultZone: http://peer1:8761/eureka/,http://peer2:8762/eureka

参考文档

http://cloud.spring.io/spring-cloud-static/Brixton.SR5/#spring-cloud-eureka-server